public class Solution {
    public int massage(int[] nums) {
// i位置有选有不选
// 选：nums[i]+g[i-1](前一个位置必不选)
// 不选： 前一个位置可能选或者不选 max(f[i-1],g[i-1])
//   return 最后一个位置选或不选中的最大 max(f[n-1],g[n-1])

        if(nums==null||nums.length==0){
            return 0;//对数组特判，防止下标异常
        }

        int n=nums.length;
        int[]f = new int[n];
        int[]g = new int[n];

        f[0]=nums[0];
        g[0]=0;
        for(int i=1;i<n;i++){
            f[i]=nums[i]+g[i-1];
            g[i]=Math.max(f[i-1],g[i-1]);
        }
        int ans=Math.max(f[n-1],g[n-1]);

        return ans;
    }
}